home *** CD-ROM | disk | FTP | other *** search
/ FishMarket 1.0 / FishMarket v1.0.iso / fishies / 001-025 / disk_013 / eliza.bas < prev    next >
BASIC Source File  |  1992-05-06  |  8KB  |  221 lines

  1. 1     REM
  2. 20    REM   ELISA DOCTOR
  3. 30    REM   CREATED BY JOSEPH WEIZENBAUM
  4. 40    REM   THIS VERSION BY JEFF SHRAGER
  5. 50    REM   EDITED AND MODIFIED FOR MITS 8K BASIC 4.0 BY 
  6. 60    REM   STEVE NORTH -- CREATIVE COMPUTING
  7. 70    REM   PO BOX 789-M MORRISTOWN NJ  07960
  8. 80    REM
  9. 90    REM   -INITIALIZATION-
  10. 100   SCREEN 1,2,0:WIDTH 80
  11. 105   PRINT "PLEASE TURN ON YOUR 'CAPS LOCK' KEY."
  12. 110   DIM C$(72),I$(72),K$(72),F$(72),S$(72),R$(72),P$(72),Z$(72)
  13. 120   DIM S(36),R(36),N(36)
  14. 130   N1=36:N2=12:N3=112
  15. 140   FOR X=1 TO N1+N2+N3:READ Z$:NEXT X:REM SAME AS RESTORE
  16. 150   FOR X=1 TO N1
  17. 160   READ S(X),L:R(X)=S(X):N(X)=S(X)+L-1
  18. 170   NEXT X
  19. 175   PRINT "HI!  I'M ELIZA.  WHAT'S YOUR PROBLEM?"
  20. 180   Z9$="HI!  I'M ELI ZA.  WHAT'S YOUR PROBLEM?":GOSUB 5000
  21. 190   REM
  22. 200   REM   -USER INPUT SECTION-
  23. 210   REM
  24. 220   INPUT I$
  25. 230   I$=" "+I$+" "
  26. 240   REM   GET RID OF APOSTROPHES
  27. 250   FOR L=1 TO LEN(I$)
  28. 260   IF MID$(I$,L,1)="'" THEN I$=LEFT$(I$,L-1)+RIGHT$(I$,LEN(I$)-L):GOTO 260
  29. 270   IF L+4<=LEN(I$) THEN GOTO 280 ELSE GOTO 290
  30. 280   IF MID$(I$,L,4)="SHUT" THEN Z9$="SHUT UP..":PRINT Z9$:GOSUB 5000:GOTO 2140
  31. 290   NEXT L
  32. 300   IF I$=P$ THEN Z9$="PLEASE DON'T REPEAT YOURSELF!":PRINT Z9$:GOSUB 5000:GOTO 190
  33. 310   REM
  34. 320   REM   -FIND KEYWORD IN I$-
  35. 330   REM
  36. 340   RESTORE
  37. 350   S=0
  38. 360   FOR K=1 TO N1
  39. 370   READ K$
  40. 380   IF S>0 THEN 420
  41. 390   FOR L=1 TO LEN(I$)-LEN(K$)+1
  42. 400   IF MID$(I$,L,LEN(K$))=K$ THEN S=K:T=L:F$=K$
  43. 410   NEXT L
  44. 420   NEXT K
  45. 430   IF S>0 THEN K=S:L=T:GOTO 460
  46. 440   K=36:GOTO 670:REM  WE DIDN'T FIND ANY KEYWORDS
  47. 450   REM
  48. 460   REM   TAKE RIGHT PART OF STRING AND CONJUGATE IT
  49. 470   REM   USING THE LIST OF STRINGS TO BE SWAPPED
  50. 480   REM
  51. 490   RESTORE:FOR X=1 TO N1:READ Z$:NEXT X:REM SKIP OVER KEYWORDS
  52. 500   C$=" "+RIGHT$(I$,LEN(I$)-LEN(F$)-L+1)
  53. 510   FOR X=1 TO N2/2
  54. 520   READ S$,R$
  55. 530   FOR L=1 TO LEN(C$)
  56. 540   IF L+LEN(S$)>LEN(C$) THEN 590
  57. 550   IF MID$(C$,L,LEN(S$))<>S$ THEN 590
  58. 560   C$=LEFT$(C$,L-1)+R$+RIGHT$(C$,LEN(C$)-L-LEN(S$)+1)
  59. 570   L=L+LEN(R$)
  60. 580   GOTO 630
  61. 590   IF L+LEN(R$)>LEN(C$) THEN 630
  62. 600   IF MID$(C$,L,LEN(R$))<>R$ THEN 630
  63. 610   C$=LEFT$(C$,L-1)+S$+RIGHT$(C$,LEN(C$)-L-LEN(R$)+1)
  64. 620   L=L+LEN(S$)
  65. 630   NEXT L
  66. 640   NEXT X
  67. 650   IF MID$(C$,2,1)=" " THEN C$=RIGHT$(C$,LEN(C$)-1):REM ONLY ONE SPACE
  68. 660   REM
  69. 670   REM   NOW USING THE KEYWORD NUMBER (K) GET REPLY
  70. 680   REM
  71. 690   RESTORE:FOR X=1 TO N1+N2:READ Z$:NEXT X
  72. 700   FOR X=1 TO R(K):READ F$:NEXT X:REM  READ RIGHT REPLY
  73. 710   R(K)=R(K)+1
  74. 720   IF R(K)>N(K) THEN R(K)=S(K)
  75. 730   IF RIGHT$(F$,1)<>"*" THEN Z9$=F$:PRINT  F$:GOSUB 5000:P$=I$:GOTO 190
  76. 740   Z9$=LEFT$(F$,LEN(F$)-1)+C$:PRINT Z9$:GOSUB 5000
  77. 750   P$=I$:GOTO 190
  78. 760   REM
  79. 770   REM   -PROGRAM DATA FOLLOWS-
  80. 780   REM
  81. 790   REM KEYWORDS
  82. 800   REM
  83. 810   DATA "CAN YOU","CAN I","YOU ARE","YOURE","I DONT","I FEEL"
  84. 820   DATA "WHY DONT YOU","WHY CANT I","ARE YOU","I CANT","I AM","IM "
  85. 830   DATA "YOU ","I WANT","WHAT","HOW","WHO","WHERE","WHEN","WHY"
  86. 840   DATA "NAME","CAUSE","SORRY","DREAM","HELLO","HI ","MAYBE"
  87. 850   DATA " NO","YOUR","ALWAYS","THINK","ALIKE","YES","FRIEND"
  88. 860   DATA "COMPUTER","NOKEYFOUND"
  89. 870   REM
  90. 880   REM   STRING DATA FOR CONJUGATIONS
  91. 890   REM
  92. 900   DATA " ARE "," AM ","WERE ","WAS "," YOU "," I ","YOUR ","MY "
  93. 910   DATA " IVE "," YOUVE "," IM "," YOURE "
  94. 920   REM
  95. 930   REM   REPLIES
  96. 940   REM
  97. 950   DATA "DON'T YOU BELIEVE THAT I CAN*"
  98. 960   DATA "PERHAPS YOU WOULD LIKE TO BE ABLE TO*"
  99. 970   DATA "YOU WANT ME TO BE ABLE TO*"
  100. 980   DATA "PERHAPS YOU DON'T WANT TO*"
  101. 990   DATA "DO YOU WANT TO BE ABLE TO*"
  102. 1000  DATA "WHAT MAKES YOU THINK I AM*"
  103. 1010  DATA "DOES IT PLEASE YOU TO BELIEVE I AM*"
  104. 1020  DATA "PERHAPS YOU WOULD LIKE TO BE*"
  105. 1030  DATA "DO YOU SOMETIMES WISH YOU WERE*"
  106. 1040  DATA "DON'T YOU REALLY*"
  107. 1050  DATA "WHY DON'T YOU*"
  108. 1060  DATA "DO YOU WISH TO BE ABLE TO*"
  109. 1070  DATA "DOES THAT TROUBLE YOU?"
  110. 1080  DATA "TELL ME MORE ABOUT SUCH FEELINGS."
  111. 1090  DATA "DO YOU OFTEN FEEL*"
  112. 1100  DATA "DO YOU ENJOY FEELING*"
  113. 1110  DATA "DO YOU REALLY BELIEVE I DON'T*"
  114. 1120  DATA "PERHAPS IN GOOD TIME I WILL*"
  115. 1130  DATA "DO YOU WANT ME TO*"
  116. 1140  DATA "DO YOU THINK YOU SHOULD BE ABLE TO*"
  117. 1150  DATA "WHY CAN'T YOU*"
  118. 1160  DATA "WHY ARE YOU INTERESTED IN WHETHER OR NOT I AM*"
  119. 1170  DATA "WOULD YOU PREFER IF I WERE NOT*"
  120. 1180  DATA "PERHAPS IN YOUR FANTASIES I AM*"
  121. 1190  DATA "HOW DO YOU KNOW YOU CAN'T*"
  122. 1200  DATA "HAVE YOU TRIED?"
  123. 1210  DATA "PERHAPS YOU CAN NOW*"
  124. 1220  DATA "DID YOU COME TO ME BECAUSE YOU ARE*"
  125. 1230  DATA "HOW LONG HAVE YOU BEEN*"
  126. 1240  DATA "DO YOU BELIEVE IT IS NORMAL TO BE*"
  127. 1250  DATA "DO YOU ENJOY BEING*"
  128. 1260  DATA "WE WERE DISCUSSING YOU-- NOT ME."
  129. 1270  DATA "OH, I*"
  130. 1280  DATA "YOU'RE NOT REALLY TALKING ABOUT ME, ARE YOU?"
  131. 1290  DATA "WHAT WOULD IT MEAN TO YOU IF YOU GOT*"
  132. 1300  DATA "WHY DO YOU WANT*"
  133. 1310  DATA "SUPPOSE YOU SOON GOT*"
  134. 1320  DATA "WHAT IF YOU NEVER GOT*"
  135. 1330  DATA "I SOMETIMES ALSO WANT*"
  136. 1340  DATA "WHY DO YOU ASK?"
  137. 1350  DATA "DOES THAT QUESTION INTEREST YOU?"
  138. 1360  DATA "WHAT ANSWER WOULD PLEASE YOU THE MOST?"
  139. 1370  DATA "WHAT DO YOU THINK?"
  140. 1380  DATA "ARE SUCH QUESTIONS ON YOUR MIND OFTEN?"
  141. 1390  DATA "WHAT IS IT THAT YOU REALLY WANT TO KNOW?"
  142. 1400  DATA "HAVE YOU ASKED ANYONE ELSE?"
  143. 1410  DATA "HAVE YOU ASKED SUCH QUESTIONS BEFORE?"
  144. 1420  DATA "WHAT ELSE COME TO MIND WHEN YOU ASK THAT?"
  145. 1430  DATA "NAMES DON'T INTEREST ME."
  146. 1440  DATA "I DON'T CARE ABOUT NAMES-- PLEASE GO ON."
  147. 1450  DATA "IS THAT THE REAL REASON?"
  148. 1460  DATA "DON'T ANY OTHER REASONS COME TO MIND?"
  149. 1470  DATA "DOES THAT REASON EXPLAIN ANYTHING ELSE?"
  150. 1480  DATA "WHAT OTHER REASONS MIGHT THERE BE?"
  151. 1490  DATA "PLEASE DON'T APOLOGIZE!"
  152. 1500  DATA "APOLOGIES ARE NOT NECESSARY."
  153. 1510  DATA "WHAT FEELINGS DO YOU HAVE WHEN YOU APOLOGIZE."
  154. 1520  DATA "DON'T BE SO DEFENSIVE!"
  155. 1530  DATA "WHAT DOES THAT DREAM SUGGEST TO YOU?"
  156. 1540  DATA "DO YOU DREAM OFTEN?"
  157. 1550  DATA "WHAT PERSONS APPEAR IN YOUR DREAMS?"
  158. 1560  DATA "ARE YOU DISTURBED BY YOUR DREAMS?"
  159. 1570  DATA "HOW DO YOU DO ... PLEASE STATE YOUR PROBLEM."
  160. 1580  DATA "YOU DON'T SEEM QUITE CERTAIN."
  161. 1590  DATA "WHY THE UNCERTAIN TONE?"
  162. 1600  DATA "CAN'T YOU BE MORE POSITIVE?"
  163. 1610  DATA "YOU AREN'T SURE?"
  164. 1620  DATA "DON'T YOU KNOW?"
  165. 1630  DATA "ARE YOU SAYING NO JUST TO BE NEGATIVE?"
  166. 1640  DATA "YOU ARE BEING A BIT NEGATIVE."
  167. 1650  DATA "WHY NOT?"
  168. 1660  DATA "ARE YOU SURE?"
  169. 1670  DATA "WHY NO?"
  170. 1680  DATA "WHY ARE YOU CONCERNED ABOUT MY*"
  171. 1690  DATA "WHAT ABOUT YOUR OWN*"
  172. 1700  DATA "CAN YOU THINK OF A SPECIFIC EXAMPLE?"
  173. 1710  DATA "WHEN?"
  174. 1720  DATA "WHAT ARE YOU THINKING OF?"
  175. 1730  DATA "REALLY, ALWAYS?"
  176. 1740  DATA "DO YOU REALLY THINK SO?"
  177. 1750  DATA "BUT YOU ARE NOT SURE YOU*"
  178. 1760  DATA "DO YOU DOUBT YOU*"
  179. 1770  DATA "IN WHAT WAY?"
  180. 1780  DATA "WHAT RESEMBLANCE DO YOU SEE?"
  181. 1790  DATA "WHAT DOES THE SIMILARITY SUGGEST TO YOU?"
  182. 1800  DATA "WHAT OTHER CONNECTIONS DO YOU SEE?"
  183. 1810  DATA "COULD THERE REALLY BE SOME CONNECTION?"
  184. 1820  DATA "HOW?"
  185. 1830  DATA "YOU SEEM QUITE POSITIVE."
  186. 1840  DATA "ARE YOU SURE?"
  187. 1850  DATA "I SEE."
  188. 1860  DATA "I UNDERSTAND."
  189. 1870  DATA "WHY DO YOU BRING UP THE TOPIC OF FRIENDS?"
  190. 1880  DATA "DO YOUR FRIENDS WORRY YOU?"
  191. 1890  DATA "DO YOUR FRIENDS PICK ON YOU?"
  192. 1900  DATA "ARE YOU SURE YOU HAVE ANY FRIENDS?"
  193. 1910  DATA "DO YOU IMPOSE ON YOUR FRIENDS?"
  194. 1920  DATA "PERHAPS YOUR LOVE FOR FRIENDS WORRIES YOU."
  195. 1930  DATA "DO COMPUTERS WORRY YOU?"
  196. 1940  DATA "ARE YOU TALKING ABOUT ME IN PARTICULAR?"
  197. 1950  DATA "ARE YOU FRIGHTENED BY MACHINES?"
  198. 1960  DATA "WHY DO YOU MENTION COMPUTERS?"
  199. 1970  DATA "WHAT DO YOU THINK MACHINES HAVE TO DO WITH YOUR PROBLEM?"
  200. 1980  DATA "DON'T YOU THINK COMPUTERS CAN HELP PEOPLE?"
  201. 1990  DATA "WHAT IS IT ABOUT MACHINES THAT WORRIES YOU?"
  202. 2000  DATA "SAY, DO YOU HAVE ANY PSYCHOLOGICAL PROBLEMS?"
  203. 2010  DATA "WHAT DOES THAT SUGGEST TO YOU?"
  204. 2020  DATA "I SEE."
  205. 2030  DATA "I'M NOT SURE I UNDERSTAND YOU FULLY."
  206. 2040  DATA "COME COME ELUCIDATE YOUR THOUGHTS."
  207. 2050  DATA "CAN YOU ELABORATE ON THAT?"
  208. 2060  DATA "THAT IS QUITE INTERESTING"
  209. 2070  REM
  210. 2080  REM   DATA FOR FINDING REPLIES
  211. 2090  REM
  212. 2100  DATA 1,3,4,2,6,4,6,4,10,4,14,3,17,3,20,2,22,3,25,3
  213. 2110  DATA 28,4,28,4,32,3,35,5,40,9,40,9,40,9,40,9,40,9,40,9
  214. 2120  DATA 49,2,51,4,55,4,59,4,63,1,63,1,64,5,69,5,74,2,76,4
  215. 2130  DATA 80,3,83,7,90,3,93,6,99,7,106,6
  216. 2140  END
  217. 5000  REM SPEECH SUBROUTINE
  218. 5010  ZA$=TRANSLATE$(Z9$)
  219. 5020  ZA%=NARRATE(ZA$)
  220. 5030  RETURN
  221.